package org.example;
//实现一个算法，确定一个字符串 s 的所有字符是否全都不同。
//示例 1：
//输入: s = "leetcode"
//输出: false
//示例 2：
//输入: s = "abc"
//输出: true
//限制：
//0 <= len(s) <= 100
//s[i]仅包含小写字母
public class isUnique {
    public boolean isUnique(String astr) {
        //鸽巢原理
        if(astr.length()>26){
            return false;
        }
        //相当于是一个32个比特位的位图
        //左边26为用来表示26个英文字母使用的次数
        int bitMap=0;
        for(int i=0;i<astr.length();i++){
            //先判断字符是否在位图中
            int x=astr.charAt(i)-'a';
            //把要比较的数字移到最左边，判断之前是不是为1，为1的话代表已经使用过了
            if(((bitMap >> x) & 1)==1) return false;
            //把当前字符加入到位图中
            //bitMap= bitMap | 1<<x,表示把1向左移动两位
            bitMap |=1 <<x;
        }
        return true;
    }
}
